home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The X-Philes (2nd Revision)
/
The X-Philes Number 1 (1995).iso
/
xphiles
/
hp48hor2
/
utils9.txt
< prev
next >
Wrap
Text File
|
1995-03-31
|
82KB
|
2,154 lines
DOC 1.1 -- UTILS directory documentation
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
NOTE! This is a plain ASCII text file containing multiple
documents. You may find it most convenient to view or print this file
by running the DOC.EXE program (supplied on this disk) on your PC.
This is the first Goodies Disk to do it this way. Hope you like it.
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
:GD9
:Utilities
:-jkh-
@@BEAN11 -G
(Comp.sys.hp48)
Item: 2147 by bawa@eecs.nwu.edu [Sanjiv Bawa]
Subj: The Bean Counter Ver 1.1
Date: 09 Oct 1993
ííííííííííííííííííí The Bean Counter íííííííííííííííííí
Version 1.1
(C) 1993 Sanjiv Bawa
bawa@eecs.nwu.edu
GX GX GX GX GX Version ONLY.
This is a NEW VERSION of THE BEAN COUNTER.
Finally !! Here is a post of The Bean Counter - a money
manager program. This is version 1.1. If you want to
track where your money is going this is what you want to
use. Following is a description of the features of this
program.
Have fun !
Noncommercial distribution allowed, provided that this
copyright message is preserved, and any modified versions
are clearly marked as such.
THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY
EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE.
íííííííííííííííííííííííííííííííííííííííí
VERSION 1.1 SPECIFIC COMMENTS
1. Fixed a bug that caused the program to crash when
expense types were being changed.
2. Instead of - signs showing a credit in the statements
a + sign is used. This is more intuitive. A C or CR is
normally used but a C is not as visible in the
smallest font mode as a +.
3. Separated TRANSACTIONS into INCOME and EXPENSES. There
are now separate INCOME TYPES which can be created and
modified using the MODIFY EXPENSE TYPES and MODIFY
INCOME TYPES in the main menu.
The program will now create new two new files in your
BEAN directory when you first run it. They are TYPES and
INTYPES and hold information about the EXPENSE and INCOME
TYPES.
The filename of the version is BEAN11.LIB
The file formats are the same as version 1.0
ííííííííííííííííííííííííííííííííííííííí
VERSION 1.0 release documentation (unmodified)
After looking through ftp sites everywhere for a program
that helps manage ones money (an "Expense Manager" I
believe is what they are called) I decided to write a
program to help me keep track of my expenses.
It turned out to be quite a reasonably polished program
so, happily, I am going to release it to the rest of the
world - if, of course, anybody wants it .....
WHO WOULD FIND IT USEFUL ?
If you are a normal person who does not have a gazillion
bucks, you will find the program quite useful in keeping
track of all your money. Version 1.0 of this program does
slightly more than a normal personal organizer. 2.0 will
probably do way more (provided there is any kind of
interest in the program).
FEATURES:
This program is capable of handling multiple accounts
(limited only by memory). They can be of two types,
Credit and Checking. The Credit account type is designed
for transactions done with credit cards. The Checking
account type, on the other hand, can be used for
checking, savings and cash accounts. You can open and
close accounts at will.
The program allows you to enter simple transactions (Say,
you spent money on clothes, or deposited a paycheck). It
also allows you to transfer money between accounts (Say
you got a cash advance from your VISA and deposited it in
your checking account). Each transaction has a date,
Expense type (explained later), Amount and Remarks
attached to it.
The program allows you to create several different
EXPENSE TYPES, so you can easily categorize your
expenses, to figure out exactly where your money is
going.
The program also allows you to archive old transactions,
so that thousands of old transactions do not slow down
the program. The number of transactions that you keep is
configurable (can be different for each account).
It creates mini statements that you can look at any time.
You can view 7 transactions at a time (limited by size of
screen), complete with current balances.
íííííííííííííííííííííííííííííííííííííííí
This is a GX version. It will NOT work on an SX. It will
NOT crash your SX, however, since it has been written in
usr RPL.
SETUP
If you are running the program for the first time SETUP
and BEAN do the same thing. If you have old files SETUP
will delete them. To run the program you must have at
least ONE account and the program really will not let you
do anything unless you create one. Choose CREATE from the
first menu that you see, which will be ACCOUNT
MANAGEMENT. Then, before you edit anything, read the
following, especially the paragraph subtitled "CREATING
AN ACCOUNT". (The form is a little tricky because the
people at HP simply ignored every piece of mail that I
sent them, so I could not get a hold of the full format
of the INFORM command)
HOW TO USE THIS PROGRAM
This program uses the menu systems that are new to the
GX. It makes the program a lot easier to use. The main
menu (you will not see it when you run the program for
the very first time) has the following entries,
TRANSACTION, TRANSFER, ACCOUNTS, EXPENSE TYPES, ARCHIVE,
STATEMENT, QUIT. The paragraphs below will explain each
option.
BASIC PREMISE OF ACCOUNTING
When money changes hands, a TRANSACTION happens. This
transaction always happens between two ACCOUNTS. One
account received money the other loses it. Generally, you
only keep track of accounts that you own. So, when you
spend money, say by using your VISA to buy a pizza you
only care about what happens to your VISA account. In
this case, the balance goes up and you suddenly owe VISA
more money.
ORGANIZING THIS PROGRAM
Assuming you want to keep track of all your expenses
etc., you want to create several accounts. Most people
will get away with just creating accounts in the program
named after their bank accounts and credit cards and one
or two CASH accounts. Every time you spend money, use a
credit card, cash a check, or get money from an ATM etc.
you should record it (assuming you want to keep track of
things). You can do this by using the TRANSACTION and
TRANSFER options. Read on to find out how ....
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
ACCOUNTS (Create, Modify, Close and Reopen)
Creating an account is the FIRST thing you have to do. It
is just a little bit tricky, but if you read the
instructions, you should have no problems.
When you choose the Create Accounts, or Modify
Accounts option, you will see a screen with 7 items.
NAME, TYPE, DATE, BALANCE, ARCH ON, KEEP MTHS, OPEN.
There is a default for all except NAME. You have to
enter a NAME.
NAME is the name of the account. Example VISA, AMEX,
BANKONE, CASH etc.
TYPE: There are two types of accounts, credit and
checking. Basically, when you look at your statement
for the account and see a balance; if you owe that
balance it is a credit account (such is the case for
credit cards), and if you have that balance is a
checking type account (which is the case for
checking, savings and CASH accounts). To select a
checking type account enter "-" (the default) or
enter "+" for a credit type account.
DATE is the first date that you are going to ever
going to enter a transaction for. It does not have
to be the date you opened the account, just the very
first day, that you want to record in your GX. See
BALANCE
BALANCE is the starting balance on the DATE that you
just entered (see above). The final balance will be
computed using this starting BALANCE and the
transactions that you enter.
ARCH ON: When you run ARCHIVE it will attempt to
archive transactions so that the very first
transaction left in the account is the day *after*
ARCH ON. Obviously, if your bank always sends to
statements at the end of the month you should enter
31. If, say, statements are from the 16th of the
previous month to the 15th of this month, enter 15.
This helps keeping things in sync, so you do not
have haphazard beginning dates when you ARCHIVE
transactions.
KEEP MTHS is the numbers of months that it will keep
online when you do an ARCHIVE. The higher this
number, the slower things will get, since you will
have too many transactions in the list. Too small a
number will mean that you do not have enough
transactions online.
OPEN? is if this account is open for business. If
you creating it, it probably is. No transactions are
allowed on closed accounts.
CLOSE closes an open account. NOTHING is deleted
REOPEN reopens a closed account
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
TRANSACTION
Self explanatory. Every time you spend money,
receive a paycheck etc., you should select this
option. See TRANSFER. Remember to use NEGATIVE
numbers for any money that you receive. This may be
confusing at first, but if you think about it, it
makes sense. If a positive number is money outflow,
a negative number would be inflow. Thus, your
paycheck would, for example, be recorded as -800.
Future versions, will fix this.
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
TRANSFER
Do not use the TRANSACTION option if you transfer
money between accounts. Say if you get a cash
advance from you VISA and deposit it in your
checking account, except for bank fees, you have not
spent any money.
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
EXPENSE TYPES
To categorize your transactions you can create,
modify or delete EXPENSE TYPES. There are a few
created for you already. You can make more. Try not
to delete any. I have not really put in the code to
delete a type, so it just creates a space in the
menu.....
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
ARCHIVE
Puts old transactions in an archive. The archive
filename is the account filename + .CL. The starting
balance is adjusted properly. Note, that in this
version, nothing can be done with this archive file.
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATEMENT
Creates a statement, with balance for you to see. It
starts off the very bottom, i.e. the very last
transaction to happen in displayed at the very
bottom. Use the up arrow and down arrow to go up and
down. Any other key get you out. Yes, it is slow,
but Version 2.0 will have this part written in sys
RPL so it will be faster.
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
**Special Instructions**
This is not a 100% perfect program. It is on the slowish
side with obvious defects in the ACCOUNT create/modify
part. You can get it to crash by doing things that should
not be done, i.e creating two accounts with the same
name, creating an account with the name ACCTS etc. There
will be many more checks etc. in the next version, and it
will be faster with more functionality.
If you have any comments on the program, its
functionality or its documentation, please let me know at
bawa@eecs.nwu.edu. Please put "The Bean Counter" in the
subject line.
Thank you for your support.
@CD21
Change Directory
Version 2.1, January 1993
by Dan Kirkland
CD (Change Directory) is a library that allows you to
view, change, create, and destroy directories graphicly.
INSTALLING THE CD LIBRARY
Transfer the CD library to your HP48.
Put the library on the stack.
Enter the port number were you want to store the CD
library and press STO .
Turn the HP48 off and back on again to allow the CD
library to attach.
Purge the variable with the original copy of the CD
library.
REMOVING THE CD LIBRARY
Go to the HOME directory.
Enter 1122 and execute DETACH .
Enter 1122 tagged with the port number which the CD
library is stored and execute PURGE. ( or :&:1122 PURGE)
USING THE CD LIBRARY
Go to the library menu and press the CD menu key.
This will give you a menu with following keys.
CD - The main program.
ABOUT.CD - Title screen.
You can run CD by entering this menu and pressing the CD
key or by just entering the letters CD.
The first time you run CD it will scan for all your
directories and store them in a variable in your HOME
directory called 'CD.Data'. 'CD.Data' is used for faster
drawing of the tree.
If you create or destroy any directories outside of the
CD program, you will need to SCAN the directories again
to have an accurate picture of your directories.
CD MENU KEYS
HOME - Highlights the HOME directory.
SCAN - Scans the directories and updates 'CD.Data'.
CRDIR - Create a subdirectory in the highlighted
directory.
PGDIR - Purge the highlighted subdirectory.
OTHER ACTIVE KEYS
THE ARROW KEYS - Move highlight from one directory to
another.
ENTER - Exit CD into highlighted directory.
ON (ATTN) - Exit CD without changing directory.
+/- - Toggle menu on/off (menu keys stay
active).
Dan Kirkland
Email: kirkland@ee.utah.edu
@@CGENERIC SG
CGENERIC - used by FONEMAN.
@@COMPRESS SG
(Comp.sys.hp48)
Item: 2923 by ftg0673@tamsun.tamu.edu [Rick Grevelle]
Subj: High Performance Data Compression
Date: 08 Dec 1993
[Note: This is an updated version of the RF (Redundancy
Fighter) programs which have been on this and on
previous Goodies Disks. Although the compression logic
is the same as RF's, the memory handling is much safer,
and the decompression is much faster. Also, it creates
Library Objects instead of strings. Which should you
use: RF, or COMPRESS? Try both, and decide which you
like better. -jkh-]
These two routines are the first stage of a multipass
high performance data compression scheme. The run length
oriented algorithm is a variation of the one originally
implemented by Lutz Vieweg. For the compression routine
the final 'BYTES COMPRESSED' readout pertains to the
actual number of bytes saved. I am interested in
expanding the base of beta testers on a project nearing
completion at this time, and as a consequence I shall be
prereleasing segments of the main library but without
most of their documents, and lacking full functionality.
For example, the multiple pass feature has been disabled
here. I would be indebted to any individual who might
discover, and report, any bugs to me. Particularly if
you could explain to me how I could recreate the
anomalies. Future versions are being discussed and may
even be self evaluating in order to obtain maximum
compression for the varying data structures within the
48's environment.
Rick Grevelle
(409) 774-1169
ftg0673@tamsun.tamu.edu
@@CROLDX SG
CROLDX - used by FONEMAN.
@@DBASE -G
(Comp.sys.hp48)
Item: 1387 by _mtodd@hpcvbbs.external.hp.com
[Matthew Todd Eckrich]
Subj: HP48GX Database Application
BYTES: # CE11h, 4654.5
Date: 24 February 1993
The following are prominent features of this database
application for an HP48G/GX:
* Written completely in System RPL.
* Allows multiple databases.
* Allows browsing titles using the internal browser.
* Entries exceeding the display boundaries can be
scrolled.
* Repeat key features.
* All entries are sorted.
* Databases accessible from any directory.
Each database consists of a number of records. Each
record consists of a set number of fields determined when
the database is created. The physical structure of each
database is a list of list(s) of strings(s). Linefeeds
are allowed in strings. The databases are stored in the
hidden directory ( #640BEh SYSEVAL to enter -- caution:
careless use of SYSEVAL can cause a memory loss).
To use, install the library and execute XQDB. It will
first prompt to define a new database.
When the browser is active to view the records in a
database the keyboard is defined as follows:
11.1 DB Browses databases and brings up database
menu
12.1 FIND-> Brings up menu for search of next
record(s). Note that a key search matches
strings in just the first field of each
record.
13.1 FLD-> Browses records by the next field.
14.1 ADD Adds record.
15.1 DEL Deletes record.
16.1 EDIT Edits record.
25.1 UPARROW Advances highlight up one record.
25.2 Advances highlight up one page.
(left-shifted UPARROW)
25.3 Advances highlight to top record.
(right-shifted UPARROW)
35.1 DOWNARROW Advances highlight down one record
35.2 Advances highlight down one page.
(left-shifted DOWNARROW)
35.3 Advances highlight to last record.
(right-shifted DOWNARROW)
51.1 ENTER Views currently highlighted record in
full-screen mode, redefining the keyboard
as explained in next section.
61.1 ALPHA Allows search of records by first letter
of current field.
Thus, ALHPA N advances to first record
beginning with the letter N.
91.1 CANCEL Exits.
When a record is being viewed in the full screen mode,
the keyboard is defined as follows:
11.1 FIND-> Brings up menu for search of next
record(s). Note that a KEY search matches
strings in just the first field of each
record.
12.1 STK-> Places fields of current record on stack.
Fields can then be entered into other
records when editing by using the STK
key.
13.1 COPY Creates duplicate of current record.
14.1 ADD Adds record.
15.1 DEL Deletes record.
16.1 EDIT Edits record.
25.1 UPARROW Advances to previous record.
25.3 Advances to top record. (right-shifted
UPARROW)
35.1 DOWNARROW Advances to next record.
35.3 Advances to last record. (right-shifted
DOWNARROW)
51.1 ENTER Starts Browser mode highlighting the
current record.
91.1 CANCEL Exits.
If the current record exceeds the display
boundaries, (with repeat key feature)
24.1 VAR Scrolls display up
26.1 NXT Scrolls display down
34.1 LEFTARROW Scrolls display left
36.1 RIGHTARROW Scrolls display right.
@@FALSECLR SG
From: Jeoff Krontz <jeoff@tamsun.tamu.edu>
Subject: FalseClear Shell v2.0
This is Rick Grevelle's famous falseclear routine put
into a shell. It enables you to use your calculator just
like normal until you want to press [ON]-[A]-[F]. Once
you press thsee keys, the memory will be falsely cleared
and your directory will appear empty. But the routine is
still in memory and will catch the next [ON]-[A]-[F] and
will continue to do so until you do an [ON]-[C].
I have also made the home directory clear (not really)
upon falsely clearing the memory. This is so that a
sneaky professor doesn't clear your memory and then press
[VAR] so that he/she sees that it did not really clear.
Press [ON]-[B] to instantly see your directory reappear.
Note that you may still use your calc like normal when
the directory is cleared. You may even run programs by
typing their names in on the command line. They are
simply "hidden". To see how this is done take a look at
the source code that I have included.
There are a few things to take note of: this program is
not perfect.
This program is limited in what it can do by the way HP
does its key handling.
1. The [ON]-[A]-[F] trap will only work when you are on
the command line or when the stack is visible. (It
will not work in the interactive stack)
2. Therefore, it will not work while running another
program or using one of the multi-line (5,6,7) stack
programs out there.
3. If you type keys real fast and then hit [ON]-[A]-[F]
then your memory will be cleared. You are actually
hitting [ON]-[A]-[F] while the key buffer is being
handled and not while my program is trapping your
keypresses.
4. To do an [ON]-[C] or [ON]-[Anything], press the key
first, and then [ON]. Note that this will not work
with [ON]-[A]-[F]. Also note that [ON]-[C],
[ON]-[D], and [ON]-[Space] will abort FalseClear.
This is a complete re-write of the version Rick posted
three weeks ago which had some shortcomings. This
version will work on both the SX and GX (or S,G).
I have also included the source code so that people can
see how it's all done. I have commented the machine
language part heavily for those unfamiliar with ML key
handling.
@@FONEMAN SG
From: "Jeoffrey M. Krontz" <jmk2088@tamsun.tamu.edu>
Subject: Fone Manager v1.0
Date: Tue, 5 Oct 93
The Fone Manager v1.0
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
I wrote this program over a period of 6 months,
constantly improving it and making it the best phone
number and address manager ever. It is definitely the
fastest program of its type that I have ever seen, and I
looked at every one I could find to get ideas from them
and to learn their weaknesses so that this program would
make the same mistakes.
All of the graphical routines and display routines are
written in machine language. The rest is entirely
system-rpl. The Fone Manager works on any G or S series
Hp48 up through revision "M".
The Fone Manager is called that because I originally
started it out to be just that. However, it is actually
a database program that can store information of any
type.
Here are a list of the main features this program has
that others don't or that are much better than others:
* Wonderful user interface that makes the program easy
to use, not complicated and complex like most others.
* Lets you use any editor you like. It has automatic
presets for QED or Stringwriter, but it will also let
you use any editor you might have. I have never seen
this option in any other program and to me it is the
worst aspect of other programs í data entry is too
slow.
* Lightning quick display routines. You can hold down
an arrow key and scroll through a list of fifty names
in about 11 seconds. This is a display of the entire
record, not just a one line title.
* Has a search routine which scans the entirety of each
record for the search string, not just a specific
line of each record. This takes under one second to
scan through a fifty-record list for a string that
appears in the last record (worst-case). That's
quick!
* The find routine has its own quick command line that
doesn't interfere with the rest of the screen. In
other words, it doesn't use the ugly HP command line.
* Uses the small font to display 7 lines of data with
about 25 characters to a line. This is a lot more
than other programs which use a bigger font which
makes you unable to display the last line of your
address without it wrapping off the screen.
* Under 3500 bytes!!
Just to see how fast Fone Manager really is, check out
these stats. Below are comparison times of the time it
takes to scroll through every entry in a 56 person fone
list:
Roldx v6.0
ÄÄÄÄÄÄÄÄÄÄ
23 seconds (highlight-bar mode)
43 seconds (full screen mode)
Fone Manager / Database
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
12 seconds (full-screen mode)
This package contains the following HP binaries
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
foneman.lib: the fone manager library
cgeneric: a program to convert other fone-lists to this
format
croldx: a program to convert roldx format fone-lists to
this format
Conversion Programs
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
I have included two programs to convert fone-lists made
with other programs to the format used in this program
which is simply a list of strings. The generic program
goes through a list made by another program and takes out
any strings it finds, putting them into individual
records to be used by this fone-manager. The roldx
converter takes a list made with roldx and converts it to
my format. If your fone-list is already a list of
strings then don't worry, it will work here. Just put
your list on the stack and then run the appropriate
conversion program. Then use the STO command explained
below to store your list into the Fone Manager.
Notes on Inner Workings
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Fone Manager stores your fone list out of site in the
Hidden directory. There are also no unsightly parameter
files to get stored in you directories. It uses user
flags 40-42 to keep track of your personal editor. The
Fdata variable, stored in the Hidden directory, is a list
of strings. Each record is stored as a string in this
list.
Commands in the Library
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Fone Manager is distributed in library form, taking up
slightly less than 3500 bytes. This library contains
four programs:
FONE í runs Fone Manager
RCL í recalls phone list so that you can back it up
STO í stores a new phone list into the Manager
DEL í deletes your phone lists from the Hidden
Directory. This is used to free up space or so
that you may create a new phone list.
(simple enough)
Inside the Fone Manager
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Fone Manager contains 6 commands:
ADD í add a record
EDIT í edit a record
DEL í delete a record (can also use the DEL key)
FIND í find a record (search for a string)
SETUP í choose your editor (QED/other, StringWriter,
HP48 editor)
EXIT í exit Fone Manager
ADD:
This command will let you enter the editor of you
choice and create a new record. This record will be
inserted into the main file in alphabetical order
automatically. The first line of the record determines
the order. You may have as many lines of data as you
wish, however only 7 will show up on the main screen of
Fone Manager. When using the HP48 editor, use
right-shift "." (right-shift period) to go to the next
line. If you press on from the HP48 editor, the record
will be aborted and not saved.
EDIT:
This command lets you edit the current record you are
on. You will be put into the editor of your choice.
Your record will be re-alphabetized automatically when
you are through editing.
DEL:
This deletes the current record from the file. You
will be prompted to make absolutely sure that you want to
delete it. The DEL key on the Hp48 keyboard does the
same thing this command does.
FIND:
This command enables you to search records for a
string. When pressed, a special miniature command line
comes up in place of the menu labels and you are prompted
to enter the search string. Enter the search string and
press enter. Fone Manager will jump to the first record
and start searching from that point. It searches the
entire record for the search string, not just the first
line. It will search through the records until the
string is found, and then it will make the record
containing the string the new current record. If the
string is not found you will be returned to the record
from which you started the search. Pressing the NXT key
will find the next occurrence of the string after the
record you are currently on.
SETUP:
This command shows you a screen of information to allow
you to choose the editor to use with Fone Manager. Your
choices are QED, StringWriter, and the Hp48 editor. Pick
the number of the choice you want to use. This setting
will be saved using using user flags 40-42. It will
remain until the calculator is warmstarted or you run
Setup again to change the editor. DO NOT change these
flags yourself. Fone Manager has precautions built in to
handle this, but don't press your luck. If this is a
problem for anyone, let me know and I can change the
flags used.
When QED is selected as the editor to be used, setup
will look for a variable named "QED.o" before it will let
you select it as your editor. If this variable does not
exist then you will get an error message. This is the
normal name for the QED executable to have. If you have
QED in a library, have the QED.o variable named something
else, or want to use a different editor with Fone
Manager, then put the name of the file to run in the
variable "QED.o". For instance, to use an editor named
FOO, store 'FOO' in "QED.o". Fone Manager runs whatever
is in this file when it goes to an editor. So, putting a
global variable or xlib in this variable will cause it to
execute when QED.o is called. Once this is done, QED can
be selected from the setup menu. If you have the normal
QED installed, everything will be done automatically.
When StringWriter is selected, Fone Manager looks to
see if library 1303 (StringWriter) is stored in a port.
If not, you will see an error message. Install
StringWriter into your Hp before using SETUP.
If you select the Hp48 editor, then you will be using
the built-in editor of the Hp48.
EXIT:
Exits Fone Manager
Hard Key Assignments
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
arrow keys í scroll through the records of your phone
list (keys may be held down for
lightning-quick repeat action)
left-shift / arrow keys í jump to first or last record
depending on which
right shift / arrow keys arrow key was pressed.
(up, right : last record)
(down, left : first record)
DEL í deletes current record. you WILL get an "Are you
Sure?" prompt.
NXT í searches for next occurence of search string
EVAL í redraws screen if necessary. (Very wide strings
could possibly mess up the screen border I have
set up)
ON í leaves Fone Manager
OFF í turns calculator off
**Note: When you first run Fone Manager, the record you
see will be a help screen telling you the hardkey
assignments. Once you enter a record, however, you will
not see this record again if you use a right/left shifted
arrow to jump to the last record. This record is
actually the last record + 1. If you ever need help
again, jump to the last record and then press the right
or up arrow key. This will advance you the the VERY last
record, the help screen. You could change this record if
you wanted, but it would not be accessible by jumping to
the last record. This record is also not searched when
using FIND. So don't change it, there is no need.
This program is freeware. I don't expect any $ for it,
just the comments of those who enjoy it. Anyone with
suggestions for improvements or just general comments,
may reach me at the following email address:
jeoff@tamsun.tamu.edu
Enjoy Fone Manager and let me hear your comments.
I will be supporting this program, so any comments or
bugs, etc will be fixed ASAP.
@@GPRT SG
Éííííííííííííííííííííííííííííííííííííííííííííííí»
º IMPROVED PRINTING OF OBJECTS ON THE HP 82240A º
º by Joe Horn º
èííííííííííííííííííííííííííííííííííííííííííííííí¼
Mini-Instructions: Either (a) Run GPRT alone, for
normal-width printing, or (b) run ->STW first and then
GPRT, for full-width printing.
gibbonscr@yvax.byu.edu [Carl Robert Gibbons] writes:
> It [the HP 82240A printer] still won't print most of
> the greek letters, though (except for alpha, beta, and
> mu.) I wonder if anyone has written a program which
> will print _any_ of the HP48's characters to the
> HP82240A printer. It would have to use the "print
> graphics data" printer commands...
Good idea! And it works great. Here's my first go at
it.
úÄÄÄÄÄÄ¿
3 GPRT 3 Graphically PRinT. Works like PR1 but uses
àÄÄÄÄÄÄù graphic mode. Handles newline characters
correctly, unlike ->GROB PR1.
Especially useful for printers OTHER than the 82240B,
e.g. the older 82240A, or Epson & LaserJet printers
(with the appropriate EPSPRINT or PCLPRINT library
installed in the HP48).
INPUT: Any object.
OUTPUT: Printer: Object is printed as it would look on
the HP48.
Stack: None (object is dropped, unlike PR1)
Although you could more easily use Brian Maguire's ->GRB
command from his UITL library (GD8), it uses too much
memory to turn a long program into a huge graphic object.
Warning: If you use this to print a program that contains
any object wider than 27 characters, such as a long
string or complex number, the printer will break up the
line in the way wide *graphics* are broken into multiple
sections, since GRPT is printing entirely in graphics
mode.
You could change the two occurrences of 2 ->GROB in the
program to 1 ->GROB, and then objects could be very long,
since they'd be printed in the tiny menu-size font. But
then you'd lose all your lower-case letters, as well as
the ability to read the printout! Of course, if you
change the two occurrences of 2 ->GROB to 3 ->GROB, then
the results will be larger characters and an equivalent
of double spacing. Although cute, it eats thermal paper.
Matter of fact, being a frugal sort, and hating to waste
thermal paper, I wrote the following program to force the
decompiler to use a line width of 27, which is the most
that the thermal printer can handle. So if you want to
use GPRT to list programs, and if you want to use the
full width of the thermal printer, run the following
->STW ("to string, wide") *first*, and then run GPRT.
Unfortunately, it's in System RPL. Fortunately, it works
on any HP48 version to date.
úÄÄÄÄÄÄÄ¿
3 ->STW 3 (called TOSTW on this disk)
àÄÄÄÄÄÄÄù
INPUT: Any object
OUTPUT: Same as would be obtained from "" +, except
newlines are inserted to create 27-char lines,
not the usual 19-char lines.
-Joseph K. Horn- EQU akcs.joehorn@hpcvbbs.cv.hp.com
@@INFO48 S-
INFO48, an informator for the HP48sx
by felson_adj@csusys.ctstateu.edu
[For S/SX only; use Memory Browser on G/GX instead]
This is my first attempt at system rpl programming... but
I think it turned out pretty usefull.
function keys:
up, down arrow move cursor line
left shift up, down move by screenfulls
right shift up, down go to first or last line
alpha alphanumeric search
enter for directory, go into it
for link, dereference and go there
for anything else, call HP editor
backspace go back one directory. can only
return to directory info48 was
started from, (see updir, home)
leftshift updir go to parrent of current
rightshift home go to root directory
menu commands
CREAT create object, initialy with a
null string
CRDIR create dir
leftshift CRDIR convert object to a directory
rightshift CRDIR convert single item directory to
an object
CRLN create link
go to target, hit CRLIN menu
key or ON/abort to abort
leftshift CRLN edit link
COPY copy current object elsewhere...
go to destination and hit COPY
menukey
leftCOPY reverse.... current object
receives contents of selected
object
MOVE move current object elsewhere...
go to other location and hit
put/^ to put object above
cursorline, or put \v to put
object below cursorline.
left-shift MOVE get object from elsewhere and put
above cursor
right-shift MOVE get object from elsewhere and put
below cursor
RENAME just like it sounds
{ move menu keys on second line }
SORT SORT, thanks to Joe Horn's
quicksort, 99% of time spent
doing XEQORDER
EXIT not really needed. ON/ABORT does
same thing
reorder operations are really really really slow.
Please be patient... "REORDERING" message displayed to
let you know INFO48 hasn't crashed.
@@LASER66 PC
LASER66.COM, a little Laser Printer utility.
Many documents (including SMTK.DOC on this disk!) are
formatted for 66 lines per page. But the HP LaserJet
(and other printers, I suppose) default to 60 lines per
page. It can be changed from the front panel, but that's
a hassle. Just run LASER66 on your PC, and your laser
printer will be set to 66 lines per page until the next
RESET or power down.
Try it:
LASER66
TYPE SMTK.DOC > PRN
Ahh, beautiful. -jkh-
@@MEMU S-
(Comp.sys.hp48)
Item: 48 by kevin@moon.wustl.edu [Kevin Ruland]
Subj: MEMU now works on rev J's [but not G/GX]
Date: 19 Feb 1993
The bad pointer that caused the bomb in rev J calcs was
found by Mika. I made the correction and had it tested.
It works now. It reportedly works on rev D and J calcs
and does not cause warm starts with QED nor [GRAPH].
Thanks for helping me find the problems.
[But time marches on... MEMU crashes the G/GX! -jkh-]
MEMU - not just another memory program.
Yes, I too wrote a graphic display of memory usage.
Actually I combined the best of MEMVIEW by Dan Kirkland
and the PBYTES by Detlef Mueller. I call it MEMU for
memory usage. It displays a bar graph representing
system ram useage, including any merged ram cards, as
well as free and used bytes, and a status line for both
ports. The port status line will display any of "EMPTY",
"size MERGED", "size RAM free", or "size ROM free". Here
"RAM" and "ROM" indicate both the r/w status and that the
memory is "free". MEMU is slightly larger that MEMVIEW
(576 bytes compaired to 374), but I find it much more
informative.
I'd be happy to send the source to anyone interested.
Thanks Detlef for making sysRPL enjoyable.
Kevin Ruland
kevin@rodin.wustl.edu
@@PCT.LIB S-
"PC TOOLS LIBRARY"
Documentations will follow, because I think that hacking
stuff should be provided with some. Anyway, it's seem
they'ra safer than the ones on horn7/FRANCE.
P.C.T : pctools lib, ID 986. Essential if you got a 128
card or two, just manage libs from ports to mem,IO...
Have fun !!!
[To date, no documentation has followed. You are on your
own with this one! -jkh-]
souiry@ismea.imt-mrs.fr or souiry@147.94.33.1
@@PIM100 SG
(User.programs)
Item: 372 by _nortaneous at hpcvbbs.cv.hp.com
Author: [Jason Christopher Emery]
Subj: Personal Information Manager
Keyw: address information data phone
Date: Tue Mar 24 1992 20:27
Lines: 17
Here's a quick, small graphical PIM. (Personal
Information Manager) It's designed to allow for entry of
phone numbers, addresses, names, and brief notes. The
main point to the program is to provide a quick, easy way
to store and retrieve information.
There's a very remote possibility there's still some bug
out there but the again, there always is. A small TXT
file is included in the directory to show some
information on the PIM.
If you ever need to backup data, all you have to do is
copy the DATA variable to wherever you need it. That's
the only place user information is stored. Remember, as
with most programs, only run the intended startup
program(s). Running something else could result in some
big problems. I don't expect anything possibly could
happen, since I've tried it myself, but it could scare
you there for a moment. :-)
Anyways, I hope you can find this useful. That's what
it's here for.
@@RFP -G
RFP: An HP48G/GX version of RF by Lutz Vieweg.
An object packer. (RFU is the unpacker).
Like PKZIP for the HP48G/GX.
This version is for the G Series. If you have an
HP48S/SX, then use RF as it has appeared on GD5, 7, or 8.
If you want an object packer that works on BOTH the SX
and the GX, then see COMPRESS.LIB above.
RFP shortens RPL programs typically to about 60% of their
size, ML programs about 70-80%, and graphics become
smaller approximately like when you use the
"GraphicObject compresser" published in the past. [Note:
Lutz is referring to PGROB and UPGROB by Erik Bryntse,
available on GD6. -jkh-]
The instructions are rather brief:
RFP . . . compresses an object in level one; if
compression is impossible, the object is left unchanged
on level 1.
RFU . . . uncompresses a string created by RFP
That's the whole thing!
[Note: Do not be alarmed if the display turns off and the
annunciators blink fitfully while RF is running. RF
turns the display off on purpose (it can run faster that
way) and uses the annunciators for scratch memory (which
also provides you with something to look at while
waiting). -jkh-]
It's a good idea to put RFU in your HOME directory, so
any program can unpack itself without problems.
Hope to stay in contact,
Lutz Vieweg.
@@RFU -G
RFU, a G/GX version of RFU by Lutz Vieweg.
Unpacks objects packed by RFP; see RFP for complete
details.
@@SCH48v20 SG
ííííííííííííííííííííííííííííííííííííííííííííííííííííííííí
SCH48 VERSION 2.0
A SCHEDULER FOR THE HP48
by William J. Levenson
ííííííííííííííííííííí AUTHOR'S NOTE ííííííííííííííííííííí
I am very pleased with the way SCH48 has turned out,
thanks to the many valuable suggestions I have received
from users. Version 2.0 should be the last revision,
barring any bugs which, of course, I will fix. It has
been both an enjoyable and educational project and I am
working on a few more. I hope SCH48 proves useful to
you!
íííííííííííííííííííííííí UPDATES íííííííííííííííííííííííí
CHANGES FROM VERSION 1.2:
* The TakeOver commands that were removed in version 1.2
have been put back. It turns out they are needed if
SCHED is executed from the command line. This should
have only caused the calculator to hang forcing you to do
ON-C (a warm-start) without any memory corruption. No
one complained about this so I guess no one executes
SCHED from the commandline.
* Repeating alarm capabilities have been added.
Repeating alarms show up on the future days to which they
will be rescheduled. The repeat alarms on future days can
be switched off to improve speed. An "R" in the upper
part of the display is shown in reverse if future repeat
alarms are displayed. The description of the alarm to
the right will have a "(RPT)" added to it if it is a
future position of a repeat alarm.
SCH48 recognizes only repeat intervals greater than one
day. To display repeat alarms with shorter intervals
would be cumbersome and, in my opinion, of little use.
SCH48 can set repeating alarms with repeat intervals that
are an integral number of days. Again, shorter intervals
would be better served by using the built-in HP ALARM
function.
* Control alarms are now supported and can be edited and
set within SCH48. The prompt is a little different for
setting alarms. For appointment alarms, a string
delimiter (") is required so that the alarm EXEC will be
interpretted as a string. For control alarms, the
argument on the command line must evaluate to a single
object or it will be considered invalid. This can be any
object (e.g. program, list, etc.). The command line will
be evaluated as it would if you were inputting to the
stack so
1 2 3 + + would store the real number 6 as the alarm
EXEC
<< 1 2 3 + + >> would store this as a program in the
alarm EXEC
1 2 3 + would be invalid because it left two arg's on
the stack
"1 2 3 + +" would set an appointment alarm with the
string as the EXEC
Get it?
* Marks in the form of one pixel to the right of each
day indicate an alarm set for that day. This display can
be turned off for the sake of speed. A pixel in the
upper part of the display will be shown in reverse if
date marks are on.
* More key definitions for scrolling and moving months
and years. In general, unshifted and right-shifted arrow
keys move the date cursor; left-shifted arrow keys scroll
the screen; right- shift-OFF turns the calc off;
right-shift NXT moves the time and date cursors to the
current time and date; +/- key toggles the future
repeating alarm displays; EEX key toggles whether days
with alarms are marked with a pixel. Other keys behave
the same as before.
CHANGES FROM VERSION 1.1:
All the sys-RPL TakeOver commands were removed from the
key definitions. This results in a savings of over 50
bytes.
I have investigated whether the TakeOver commands are
needed and came to the conclusion they are not for this
application. This change has not given me any problems
but no one has definitively explained the useage of
TakeOver. If someone has a problem with this or can
think of a possible problem, please let me know. Thanks!
CHANGES FROM VERSION 1.0 (ORIGINAL VERSION):
Two minor bugs were found and fixed. One involved the
STD mode setting on the HP48. In version 1.0, the
calender display was unless STD mode was used. This has
been fixed.
The other bug involved update of the appointments when
keys were quickly pressed. Sometimes, the appointments
would not match the day. Noone seems to have noticed
this, but I did and it is fixed.
Two features were added. A copy function copies an
entire alarm to a different day. This is intended to
compensate for the lack of repeating alarms in SCH48.
Try this option to see if repeating alarms are still
necessary. Let me know...Is this good enough or should I
work on the repeating stuff? The scanning of repeating
alarms to correctly indicate them on future dates might
slow SCH48 down - how much, I don't know yet.
An edit feature has also been added to allow you to
change the alarm text without deleting and resetting. I
found this handy.
íííííííííííííííííííííí DESCRIPTION íííííííííííííííííííííí
SCH48 is a library written entirely in system RPL and ML
which allows the HP48 to function as an electronic
"DAYTIMER". The intent is to replace the "ALARMS" catalog
in the HP48 for a more useful and intuitive
representation of appointments, events or blocks of time.
SCH48 uses the existing ALARM functions built into the
HP48. BUT...the user interface is improved (I hope). The
SCH48 library contains two commands, D->CAL and SCHED.
D->CAL merely takes a date from the stack and displays
the calender for that month. The stack diagram is:
( date íí )
where "date" is in MM.DDYYYY or DD.MMYYYY format,
depending on the HP48 setting. If YYYY is omitted, the
current year is assumed. If a whole real number is
input, it is interpreted as the month of the current
year.
SCHED is the primary function of the library. When this
command is executed, a calender is displayed with the
current day highlighted. To the right of the calender is
a listing of the current ALARMs that are scheduled for
the day. These alarms can be entered as a single point
in time or as a block of time. The time or block of time
is reflected in the listing of alarms. Below the
calender is a 24 hour time-line which shows the times of
the listed alarms blacked out. In this way, you can see
graphically, how much of your day has been scheduled.
I have attempted to present as much data as possible on a
single screen for quick viewing, but the alarm text
listings may extend beyond the window. Scrolling is
provided for this.
Once the SCHED is started, it is fairly
self-explainatory. Alarms can be set, deleted (and
acknowledged), moved, and edited. I have tried to make
the functional keys intuitive.
I thought about adding a help function but it seemed to
be a waste of memory, so I'll leave it to you to read the
documentation.
íííííííííííííííííííí KEY DEFINITIONS íííííííííííííííííííí
ííííííííííííííííííííííííííííííííííííííííííííííííííííííííí
NO SHIFT KEYS:
ííííííííííííííííííííííííííííííííííííííííííííííííííííííííí
KEY DEFINITION
{A} Scroll the screen fully to the left
(JUMPLEFT)
{F} scroll the screen fully to the right
(JUMPRIGHT)
{up arrow}
{down arrow}
{left arrow}
{right arrow} Move the date cursor on the calender
{NXT} Go to the next alarm
{ENTER} Set the alarm - the user will be prompted
for the alarm text. If a time has been
marked (see {*} key), a block of time
will be set; if not, a single time will
be set. ATTN at the prompt will erase the
contents of the command line if it is
present. ATTN without a commandline,
aborts the setting of the alarm. ENTER
enters the alarm text.
{DEL} Deletes the alarm if the time cursor is
pointing at an alarm block on the
timeline. If the time cursor is not
pointing at an alarm, a error beep will
be generated.
{LEFT-SHIFT} Activates left shift mode
{RIGHT-SHIFT} Activates right shift mode
{*} (This is the "multiply" key) sets one end
of a block of time on the time-line.
{ENTER} determines the other end of the
block of time.
{-} Moves the time cursor 15 minutes to the
left (hold down for repeat)
{+} Moves the time cursor 15 minutes to the
right (hold down for repeat)
{+/-} Toggle the display of future repeat
alarms
{EEX} Toggle the display of marks on days with
alarms
ATTN Ends SCHED
ííííííííííííííííííííííííííííííííííííííííííííííííííííííííí
LEFT SHIFT KEYS:
ííííííííííííííííííííííííííííííííííííííííííííííííííííííííí
KEY DEFINITION
{up arrow}
{down arrow} Scrolls the screen up and down. This is
necessary if a lot of alarms are set on a
single day (the listing may extend beyond
the bottom of the screen). Hold the key
down to continue scrolling.
{right arrow}
{left arrow} Scrolls the screen left and right. Hold
the key down to continue scrolling.
{PREV} Go to the previous alarm
{LEFT-SHIFT} Disables left shift mode
{RIGHT-SHIFT} Activates right shift mode
{-} Moves the time cursor 1 minutes to the
left (hold down for repeat)
{+} Moves the time cursor 1 minutes to the
right (hold down for repeat)
{EDIT} Edits the EXEC of the alarm that the time
cursor is pointing to. ATTN at the prompt
will erase the contents of the command
line if it is present. ATTN without a
commandline deletes the alarm. If you
enter the EDIT function, and change your
mind, ENTER will reset the alarm with the
text indicated. Or, you can attention
out of the EDIT and reset the alarm with
the {LEFT SHIFT - ENTER} function.
CONTROL alarms cannot be edited this way.
If you accidentally try to edit a CONTROL
alarm, ATTN out of the EDIT and reset the
alarm using {LEFT SHIFT - ENTER}.
{ENTER} Copies the alarm from the last DEL, NXT,
PREV EDIT, or ENTER command to the
current day. Use this feature to move,
copy (repeat), an alarm by using one of
the above commands to indicate the alarm
of interest, move to a different day and
set the alarm with the same time block
and EXEC on that day. CONTROL alarms can
use this too.
ííííííííííííííííííííííííííííííííííííííííííííííííííííííííí
RIGHT SHIFT KEYS:
ííííííííííííííííííííííííííííííííííííííííííííííííííííííííí
KEY DEFINITION
{up arrow}
{down arrow} Move the date cursor 4 weeks at a time
{left arrow}
{right arrow} Move the date cursor 1 year at a time
{LEFT-SHIFT} Activates left shift mode
{RIGHT-SHIFT} Disables right shift mode
{NXT} Move time and date cursors to the current
time and date
{-} Moves the time cursor 1 hour to the left
(hold down for repeat)
{+} Moves the time cursor 1 hour to the right
(hold down for repeat)
{OFF} Turn calculator off
íííííííííííí FEATURES, LIMITATIONS, AND BUGS??? ííííííííí
An alarm can be moved by first deleting it. The alarm
text is copied and will be the default the next time an
alarm is set. Use this method if the time needs to be
adjusted. If you only want to change the day, use {LEFT
SHIFT - ENTER}
An alarm can be copied by going to it by means of {NXT}
or {PREV}. Again, the text will be copied and offered as
a default the next time an alarm is set. Again, if only
the day is to be changed, use {LEFT SHIFT - ENTER}
To delete an alarm, move the cursor to the alarm block or
use {NXT} or {PREV} and press {DEL}.
An alarm may not show up on the time-line of it is a
block alarm which spans less than 7 minutes. It cannot
be edited or removed in SCH48 either. I didn't think
this was much of a limitation, but if you don't like it,
I can fix it.
CONTROL ALARMS can now be set using SCHED. Any alarm
EXEC that is not a string is set as a control alarm, just
as the HP internal alarms work. The alarm EXEC must be a
single object. The input line is treated just as the
command line is treated when in the stack display. If
more that one object result from the input line contents,
an invalid EXEC error will occur and you will be prompted
to alter the input. In most cases, the EXEC will be
either a string, which must be surrounded by double
quotes, or as a program which must be surrounded by <<
>>. The default prompt starts with two double quotes so
that appointment alarms can be input easily. Remember,
if you start over with ATTN to erase the input line of an
appointment alarm, you must add a double quote mark.
REPEAT alarms with repeat intervals that are an integral
number of days can also now be set in SCHED. To do this,
you must use the * (or multiply key) to mark the day to
set the repeating alarm on (this also sets the endpoint
of the alarm span but if the time cursor is not moved,
the time span will be zero). Now, move to the day you
wish to have the first repeat alarm appear and press
ENTER (you can also move backwards the number of days you
wish the time interval to be).
The copy function is still available using
left-shift-ENTER if you prefer that over the repeat
alarms.
SCHED should operate correctly with any HP48 time/date
settings. I primarily use a 24 hour clock and MM.DDYYYY
settings and haven't experienced any problems.
Alarms not set from inside SCHED should work fine with
the following exception. In order to set block times,
the alarm time is set with the "begin" time as the time
of the alarm. The end time is indicated by the fractional
seconds of the alarm time. That's not clear, how about
an example:
An alarm from 8:15 a.m. to 11:45 a.m. is set with
an alarm time = 08.15001145
If an alarm is created with arbitrary fractional seconds,
the time-line may end up looking a little strange but no
damage will be done.
This carries with it another minor limitation that the
end time of the alarm will be rounded to the nearest 5
minute interval. This is necessary because of accuracy
problems with those fractional seconds (trust me). I may
be able to fix this if enough of you wish it.
Past due alarms will be acknowledged when they are
deleted from within SCHED. The alarms will behave just
like the HP48 handbook describes for appointment alarms.
If you don't want the beeper going off, set flag -57.
The display of marks on the days with alarms can slow
SCH48 quite a bit when moving from month to month. Also,
the display of future repeating alarms can slow things.
For instance, if you have a repeating alarm with an
interval of one day, every day will have a mark by it
indicating that this repeating alarm will show up each
day. If you want the marks but don't want the future
repeat alarms, hit the +/- key to toggle this function.
Then, only the original alarms will be shown with marks
by the day and on the right side of the screen where the
current days alarms are listed. If you don't marks at
all (a lot of alarms will also slow things down a bit),
then toggle this function using the EEX key. Both
function are indicated in the upper part of the screen
with an inverse "R" for the repeat function and an
inverse single pixel for the mark function. If these are
not shown in reverse, then they are off.
The start up state of the mark and repeat functions is
set by the system flag -43 (reschedule unacknowledged
repeating alarms - if set, alarms are not rescheduled)
and system flag -59 (fast catalog display - set and the
marks on the dates are not initially shown). So if you
don't use repeating alarms, things will be a little
faster in SCH48 if you set flag -43. And if you don't
want the marks, set flag -59. If these functions are
toggled from withing SCH48, the system flags will be
unaffected.
ííííííííííííííííííííí CREDITS ííííííííííííííííííííííííííí
SCH48 was written in system RPL and ML using the
excellent RPL48 package written by Detlef Mueller and
Raymond Hellstern.
The SCH48 library was created using <-LIB->, again by
Detlef Mueller, Raymond Hellstern, Rick Grevelle.
THANKS to all of you for a tremendous contribution to the
HP48 world!!
Thanks also to HP for the RPL TOOLS and, especially, the
RPLMAN documentation. And, of course, thanks to HP for
such a versatile calculator.
Thanks to Mika Heiskanen and other contributors to the
entries lists that were posted at seq.uncwil.edu.
Thanks to Jan Brittenson, whose MLDL was a great help.
Thanks to Chris Spell for his tireless maintainance of
comp.sources.hp48 and the archives.
And thanks to all the helpful 48'ers who helped me get
this far. I hope this will be a useful partial payback
with, hopefully, more to come.
ííííííííííííííííííííí DISCLAIMER íííííííííííííííííííííííí
I have not had any problems with SCH48 while using it on
my HP48-D but...It does contain some unsupported entry
points. Although they have appeared on several of the
"entries" lists, that doesn't guarantee that they will
work the same on other revisions of the HP48. With that
in mind...Have fun SCHeduling and certainly let me know
of any problems!
íííííííííííííííííí COPYRIGHT NOTICE ííííííííííííííííííííí
Copyright (c), 1992, W.J. Levenson.
Permission to copy this article is granted provided
that the copies are not made or distributed for
resale (excepting nominal copying fees). Other
permissions can be arranged by contacting W.J.
Levenson via email at the following address:
akcs.levenson@hpcvbbs.cv.hp.com
or by U.S. Mail at
12558 Caminito Mira Del Mar
San Diego, CA 92130
USA
SCH48 is distributed in the hope that it will be
useful, but WITHOUT *ANY* WARRANTY.
This software is LET-ME-KNOW-WARE. Please let me
know if you like it or not and any improvements you
would like to see. But MONEY will be accepted in lieu
of the above!!
ííííííííííííííííííííííííí INSTALLATION íííííííííííííííííí
To install SCH48, a) download the ASC version,
execute ASC->, or b) download the uudecoded version
and recall it into the stack. Purge the variable
which contains the orginal copy. Enter the port
number (0,1,2) where you want to store SCH48 and
press STO. Switch the HP48 off, then on again. SCH48
will now be installed.
SIZE = 4854.5 bytes
HP48 CHECKSUM = # D4FBh
@@SMTK S-
SmartKeys version 1.59 by Simone Rapisarda.
Upgrade from version 1.23 which was on GD7.
This brief description written by Joe Horn.
For S/SX only. G/GX version is not yet available.
Facilitates the creation, management, and deletion of
system-level key assignments and menus. Allows multiple
custom menus. This is one of the libraries that is
ALWAYS in my HP48 SX, it's so useful.
The complete documentation is over 70K, and formatted to
66 lines per page (see LASER66 above), with table of
contents. It's too big to fit in this DOC viewer. If
you go into the UTILS subdirectory on this disk, and copy
the SMTK.EXE program onto your hard disk and run it
there, it'll create the document. Then you can view or
print it with the LIST.COM program, also on this disk.
@@TELE32 SG
Éíííííííííííííííííííííííí»
º TELEPHONE LIBRARY V3.2 º
º By David Bal º
º 9/1/93 º
èíííííííííííííííííííííííí¼
*** THIS PROGRAM WILL WORK ON THE HP48.GX **
This is another telephone library. It is a menu
driven program that stores the data file as a backup
object in any port you choose. This allows the user to
keep the original 30k of RAM free of misc. files. One
draw back from this format is that the program requires
about two times the size of the data file ($TELE) in free
RAM to run. This means that if your data file is 5K long
you need >10k to fully use the library. The library will
run all applications at lower memory levels but editing,
adding, or purging from the data file will not be
possible.
I. Downloading the library
1. Run KERMIT on your PC and connect the calculator
2. Type SET PORT 1(or what ever port)
3. Type SET BAUD 9600
4. Put your calculator in KERMIT SERVER mode by
pressing right-shift PRG on the S/SX, or
right-shift right-arrow on the G/GX.
5. Send the library by typing SEND TELE.LIB
6. After a few seconds the transfer will be
complete
7. Using the BYTES command check if the library is
4473 bytes with a checksum of # 5D05h
II. Starting the library
1. After downloading recall 'TELE.LIB'. Your stack
should Show 1: Library 1103: TEL... Type 0 STO
to store it into port 0.
2. After storing the library in port 0 you can
erase the other copy by typing 'TELE.LIB' PURGE.
3. Now shut the calculator off and turn it on.
4. The library will self-attach.
5. Press LIBRARY and TELE should appear named
"TELE V3.2 (c)93 David Bal"
6. The only command in the library is TELE which
activates the telephone directory.
III. Creating a storage variable (named $TELE)
1. After activating the telephone directory the
main menu should appear like:
TELEPHONE DIRECTORY
->Browse All
Add New Person
Search By Last Name
Search By First Name
Search By Phone Numb..
Search By Street Add...
EXIT
2. If you have never added anyone to the data list
you will need to create a data file. By
pressing enter from the main menu (it does not
matter which element the arrow is pointing to)
you will be asked where you want the empty data
file to be stored. All available ports
(0,1,2)will be options. Press 0 for port 0
(most people will do this) 1 for port 1 and so
on.
IV Active Keys
1. The up-arrow and down-arrow will move the
pointer up or down one element.
2. Left-shift up or down arrow will move the
pointer up or down six elements respectively (if
the list size if < 12 The pointer will move to
the top or bottom if the list.)
3. Right-shift up or down arrow will move the
pointer to the top and bottom of the list
respectively.
4. ENTER and [right-shift] [+/-] will view the
current item.
5. ON will exit the program in all cases except
when viewing an item.
V Adding a new person to the list
1. There are two ways to add a new person. Adding
from the main menu or adding from a browse
screen by pressing NEW.
2. The input cursor is on alpha-lock.
3. After imputing the eight elements. Any or all
can be left blank. The new file will be
displayed as if being viewed. If it is
acceptable press ENTER. If you wish to edit
press any other key (ATTN will do). The same
eight input questions will be asked with your
old input already there.
VI. Browsing All
1. After choosing browse all your entire list of
names will be put onto the browser. If you have
no files it will tell you so.
2. Six new hot keys will appear. EDIT, NEW, PURG,
->STK, PRINT, and UP.
3. EDIT will edit the file and replace the old one
with your new one. This is just like Adding a
new person.
4. NEW will add a new person
5. PURG will ask you if you really want to delete
the person. Press [ENTER] to delete. Any other
key to abort.
6. ->STK will ask you "SEND WHAT?" press ALL or
ONE. If you press ALL the entire list will be
sent to the stack displaying the % complete.
7. PRINT is much like ->STK. By pressing ONE will
print the person at the pointer. ALL will print
the entire list displaying the % complete.
8. UP will move you to the main menu.
VII. Searching
1. When searching for a particular string the
program looks for any element that has the same
beginning characters.
EX.
Search By First Name
First Name
Je
The program will find all people whose first
names begin with "Je". "Jen", "Jennifer", even
"Jeneseque" will be accepted. This current
version does not except wild card characters.
The program is caps sensitive.
2. While the program is searching the number found
will be displayed along with the % complete. If
you are satisfied with the # found you can press
ATTN to abort further searching and browse the
ones found. For example if you are searching
for "Fred" and know that you only have one
"Fred" and the program has displayed "1 found"
you can press ATTN and browse the one found. The
searching program searches in reverse
alphabetical order (from Z to A).
VIII.Last Words
I, David Bal, express no warranty for this program.
Even though I have thoroughly tested the program it might
contain a devastating bug. Always keep a current backup
of all memory before testing it.
This program is released as FREEWARE.
David Bal
Smail:
514 SW 34th St #17
Gainesville, FL 32607
Email: yoda@ufcc.ufl.edu or yoda@hpcvbbs.cv.hp.com
@@TIMEKEEP SG
(Comp.sys.handhelds)
Item: 532 by edp at deland.enet.dec.com
Author: [Eric Postpischil]
Date: Sun Jul 01 1990
[Note: The HP48's clock isn't terribly accurate. So HP
wrote a program called 'CLK' (on Goodies Disk #8) which
"kicks" the clock every so often to correct for the
clock's drift. But 'CLK' is 2K in size and a tad
unwieldy to use. So Eric wrote a better clock adjuster.
-jkh-]
Here's a set of timekeeping routines that compensate for
inaccuracy in the 48's clock. (They could also be used
to keep sidereal time.)
In a list called CLKDAT (clock data), there are, in
order:
o The value of TICKS at the start of some
reference period.
o The cumulative number of ticks added to the
clock since then.
o The difference between true time and clock
time as a fraction of the number of elapsed
clock ticks (called "accuracy factor").
The following routines are provided:
KICK Called with no arguments to update the clock by
the correct number of ticks.
ADJT Called with a unit object specifying an amount
of time by which to change the time zone or
system. E.g., call ADJT with -1_h on the stack
to change from Daylight Savings to Standard
Time.
ADJC Called to adjust the clock by a specified
number of ticks. Once the clock is set exactly
with ADJC, EXACT should be called or the data
will be lost when KICK is next called.
EXACT Uses the cumulative number of ticks added to
the clock, by KICK and by ADJC, to compute a
new accuracy factor.
SCHEDULE
Schedules an alarm at 4 a.m. to call KICK
daily.
CANCEL
Cancels the alarm.
RESET Set a new reference time and discard cumulative
ticks added. Keep the old accuracy factor until
a new one is computed.
To use these timekeeping routines:
o Set the time with the built-in functions.
o Make the clock as exact as desired with
CLKADJ.
o Execute RESET (no arguments).
o After using RESET, do not use the built-in
time adjustment commands.
o Let time pass.
o Make the clock as exact as desired with ADJC.
(ADJC takes as an argument a number of ticks,
just as CLKADJ does.)
o Execute EXACT.
o Execute SCHEDULE.
Every night at 4 a.m., KICK will update the clock.
After the initial setting, you can update the accuracy
factor by again adjusting the clock with ADJC and
executing EXACT. If your calculator's environment
changes, you can establish a new reference time by making
the clock exact and executing RESET. This keeps the
current accuracy factor but resets the reference time, so
the next execution of EXACT will base the new accuracy
factor on the time elapsed since RESET.
To change time zones or systems, use ADJT.
o If you call ADJC by accident, call KICK to correct it.
o If you call ADJT by accident, call it again with the
negation of the argument.
o If you call EXACT by accident, you are out of luck
unless you have another copy of your accuracy factor.
If so, replace it in CLKDAT.
KICK makes the clock correct by computing the number of
ticks to add to the clock to make it correct now:
(accuracy factor)*(TICKS - reference time - added ticks)
- added ticks
Because this calculation is used rather than simply
adding a fixed number of ticks at regular intervals, KICK
can be called at any time, at frequent or infrequent
intervals. Updating the clock daily keeps it close to
the correct time. You can change the time of the alarm
and the repeat interval in the SCHEDULE routine. (Be
sure not to set a time that is skipped over. E.g., if you
set the KICK alarm for 3 a.m. and also have an alarm that
adds 1 hour to the clock at 2 a.m. for the change to
Daylight Savings Time, then the clock will go from
slightly after 2 a.m. to slightly after 3 a.m., and the
KICK alarm will not be executed or scheduled for the next
day.)
SCHEDULE uses AO (alarm object) as the object for the
alarm to execute. This object discards its argument,
gets the current path, executes an object called JOB,
restores the current path, and turns the calculator off.
If an error occurs, the error message is left in the
stack before shutting the calculator off. If a variable
called JOB does not exist when SCHEDULE is executed, it
is created as a list specifying the current directory and
the KICK program. If you would like to add additional
routines to be executed, add them to the list in JOB.
JOB is created in the home directory but can be moved to
any port. If you need to make more complicated changes,
like removing the call to OFF, execute CANCEL, change the
AO variable, and call SCHEDULE.
KICK can be modified to adjust the clock so that it will
be correct at some time in the future. E.g., you could
arrange it so that KICK runs at 4 a.m. and adds the
number of ticks needed to make the clock correct at 4
p.m. By doing this, the clock is early part of the day
and late part of the day, instead of only early or only
late. This cuts in half the frequency with which KICK
must be executed to keep the clock within a specified
distance of the correct time.
To make this modification to KICK, add the number of
ticks to the number in stack level one just after the
call to PA. For example, to adjust KICK to prepare the
clock to be correct in 12 hours, put
353894400 +
after the call to PA in KICK.
@@TOSTW SG
TOSTW ( ->STW ) "To String, Wide" by Joe Horn
Same as "" +, but inserts newlines at wider positions,
especially useful with the HP 82240 thermal printer.
Intended for use with GPRT. See GPRT above for full
documentation.
@@XYMODEM2 S-
(Comp.sys.hp48)
Item: 1841 by alou@elde1.epfl.ch [Maurice Alou]
and westphal@elde.epfl.ch [Edouard Westphal]
Subj: X&Y Modem v2.2 for Hp48S/SX
Date: 05 Oct 1992
[For S/SX only; XMODEM is already built into the G/GX]
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
X&Y Modem v2.2 for HP48
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
[Note: This obsoletes the XYMODEM.LIB on Goodies Disk #7.
-jkh-]
CHANGE FROM v2.0 :
-The bug in ERRSET/ERRTRAP has been fixed.
-The XLIB names have changed ! sorry.
CHANGE FROM v2.1 :
-The bug concerning the IOPAR has been fixed. [Namely,
now you don't need to worry about IOPAR at all. -jkh-]
-The program checks battery level before beginning the
communication.
SETUPXYM :
CRC : toggle flag 57. If flag is true then CRC else
CHK. Used only with XModem in reception (CRC is
automaticaly choosen with YModem)
REPL : toggle flag -36 (see manual)
EXIT : do a lastmenu
SENDM :
Send with X or Ymodem depending on the first stack
object :
1: global_name/local_name -> 1: list uses Ymodem
Equivalent to SEND Kermit command
example: 'ABC'
1: :IO:name -> 1: list uses Ymodem
Equivalent to ARCHIVE
example: :IO:Sep3
1: :port#:name -> 1: list uses Ymodem
send a library or a Backup object
example: i/ :0:1275
ii/ :&:ABC
1: list -> 1: list uses Ymodem
send one or more objects listed above
example: { :IO:Sep3 :0:1275 :0:1092 FFT }
1: any -> uses Xmodem
if the object isn't of a type listed above, it will
be sent with XModem protocol (see remark below).
The output list contains the unsent objects (the files
not found in the current path).
RECX :
Receive with XModem protocol. Flag 57 specify CRC or
CHK. This command is usefull to receive a library on
stack.
-> 1: object
RECY :
Receive one or more files with YModem protocol. This
command is equivalent to the RECV command of Kermit.
->
REMARKS:
(1)
Sending an object from the HP48 to a PC with Xmodem
protocol (not Ymodem protocol) is not a good idea: this
object cannot be received from HP48 with the standard
RECV Kermit command. Why? Because Xmodem doesn't send the
file header which contains the size in bytes of the
object. This information is used by Kermit's RECV command
to check if the file has been corrupted. So a file sent
with Xmodem can be received only with Xmodem and Ymodem,
not Kermit.
In conclusion:
- a file sent with Ymodem is safe: you can receive it
later with Kermit, Xmodem and Ymodem protocol.
- a file sent with Xmodem is not safe: you can receive it
with only Xmodem and Ymodem protocol.
(2)
X&Ymodem automatically selects the serial port for the
communication, and transfers are made in binary mode. So
flags -33 and -35 have no effect. You can choose the
speed (9600, 4800, 2400, 1200) in the SETUP submenu of
the IO menu.
(3)
You must set the size of a block to 128 bytes (short
block) in the configuration of your comunication program
in your PC.
KNOWN BUG :
None.
CREDITS:
Hewlett-Packard for their Tools.
Alonzo Gariepy for his Saturn Processor Notes.
Jan Brittenson for his Star and his MLDL library.
Detlef Mueller, Raymond Hellstern and Rick Grevelle for
their Library constructor.
Chuck Forsberg for his notes on the protocols XModem
and YModem.
And to all people who gave us a lot information about
Hp28, 48 on mail, news and FTP-server.
Maurice Alou & Edouard Westphal
alou@elde.epfl.ch
westphal@elde.epfl.ch
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Do a backup with the standard ARCHIVE
before using the library!
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Library name : X-Y Modem v2.2
Library ID : 1275
Size : 3550
Chk : # 65E9h
[Note: Despite their warnings, I've never had the XYMODEM
library cause me any grief, except that Ymodem sometimes
seems to fail for no apparent reason. I use this
library on all but the smallest files. -jkh-]